// 引入express模块
const express = require('express');
// 连接数据库
require('./model/db.js');
// 引入path模块
const path = require('path');
// 引入body-parser模块处理post请求
const bodyParser = require('body-parser');
// 引入express-session模块处理session和cookie
const session = require('express-session');
// 引入dataformat日期格式化模块
const dateformat = require('dateformat');
//引入morgan模块
const morgan = require('morgan');
// 创建服务器
const app = express();


// 配置静态资源访问
//配置静态资源访问，并配置静态资源存放根目录
app.use(express.static(path.join(__dirname, 'public')));

// 配置模板引擎
// 当渲染后缀为art的模板时 使用express-art-template
app.engine('art', require('express-art-template'));
// 设置模板存放目录
app.set('views', path.join(__dirname, 'views'));
// 渲染模板时不写后缀 默认拼接art后缀
app.set('view engine', 'art');

// 配置body-parser模块处理post参数
app.use(bodyParser.urlencoded({ extended: false }));

// 配置session
app.use(session({
    secret: 'secret key',
    saveUninitialized: false,	//未登录不保存session
    cookie: {
        maxAge: 24 * 60 * 60 * 1000// 设置cookie过期时间为一天
    }
}));

//打印请求信息
app.use(morgan('dev'));

// 配置dateformat到所有模板中
app.locals.dateformat = dateformat;

// 登录拦截
app.use('/admin', require('./middleware/loginGuard.js'));

app.get('/', (req, res) => res.redirect('/home'));

// 路由导航
app.use('/admin', require('./route/admin'));
app.use('/home', require('./route/home.js'));

// 错误处理
app.use((err, req, res, next) => {
    console.log(err);
    res.status(500).send(err.message);
});

// 监听3000端口
app.listen(3000);
console.log('服务器已启动，请访问3000端口！');